package com.biannuo.szk.community.service.dto;

import com.biannuo.szk.common.util.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 博客 - DTO
 *
 * @author admin
 * @since 2021/6/18 23:49
 */
@Data
public class BlogDTO {
    private Long id;

    /**
     * 用户id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;

    /**
     * 标题
     */
    private String title;

    /**
     * 内容摘要
     */
    private String summary;

    /**
     * 作者名称
     */
    private String author;

    /**
     * 下载积分，0表示不需要积分
     */
    private Integer downloadScore;

    /**
     * 内容
     */
    private String content;

    /**
     * 阅读量
     */
    private Integer viewCount;

    /**
     * 点赞量
     */
    private Integer agreeCount;

    /**
     * 收藏量
     */
    private Integer favoriteCount;

    /**
     * 评论数量
     */
    private Integer commentCount;

    /**
     * 发布状态 0草稿1已发布2关闭
     */
    private Integer publishState;

    /**
     * 公开状态 1公开 0私有
     */
    private Integer publicState;

    /**
     * 附加资源，多个文件 逗号分割
     */
    private String attachFiles;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
    @JsonFormat(pattern = DateUtil.PATTERN_DATETIME, timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
    @JsonFormat(pattern = DateUtil.PATTERN_DATETIME, timezone = "GMT+8")
    private Date updateTime;

    /**
     * 头像
     */
    private String headerImage;

    /**
     * 点赞状态
     */
    private boolean hasAgree;

    /**
     * 收藏状态
     */
    private boolean hasFavorite;

    public String getBlogId() {
        return String.valueOf(this.id);
    }

    /**
     * 博主关注状态
     */
    private boolean bloggerFavoriteStatus;
}
